To make good looking Vue apps, we need to style our components.
To make our lives easier, we can use components with styles built-in.
In this article, we’ll look at how to customize star rating inputs.
Number of Stars
By default, the b-form-rating
displays 5 stars.
We can change the number if starts to display with the stars
prop.
For instance, we can write:
<template>
<div id="app">
<b-form-rating v-model="value" stars="8"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 6
};
}
};
</script>
We set stars
to 8, so we see 8 stars.
Show Stars Value
The show-value
prop lets us show the value of the stars.
For example, we can write:
<template>
<div id="app">
<b-form-rating v-model="value" show-value></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 0
};
}
};
</script>
Then when we click the stars, we see how many stars we set.
Precision
The stars don’ have to always increment by 1.
We can change the precision by using the show-value-precision
prop.
For instance, we can write:
<template>
<div id="app">
<b-form-rating v-model="value" readonly show-value precision="2"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 3.5
};
}
};
</script>
Then we can display star value to 2 decimal places.
However, we can’t select a part of a star.
Show Maximum Value
We can use the show-value-max
prop to show the maximum value of the stars.
For instance, we can write:
<template>
<div id="app">
<b-form-rating v-model="value" readonly show-value show-value-max precision="2"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 3.5
};
}
};
</script>
We have the show-value
and show-value-max
props to display the selected and maximum star values respectively.
Sizing
Like other components, we can change the sizing of the star rating component with the size
prop.
The value can be 'sm'
or ’lg'
,
For example, we can write:
<template>
<div id="app">
<b-form-rating v-model="value" size="sm"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 3.5
};
}
};
</script>
and we get extra small stars.
'lg'
will make the stars extra large.
Make Stars Inline
The stars can be made inline with the inline
prop.
For instance, we can write:
<template>
<div id="app">
<b-form-rating inline value="4"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 4
};
}
};
</script>
Then the rating component will be displayed inline.
Borderless
The star rating component has a border by default.
We can remove it with the no-border
prop.
For example, we can write:
<template>
<div id="app">
<b-form-rating no-border value="4"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 4
};
}
};
</script>
Now there’s no border displayed.
Disable Input
We can stop users from selecting ratings by using the disabled
prop.
For instance, we write:
<template>
<div id="app">
<b-form-rating disabled value="4"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 4
};
}
};
</script>
Make Stars Read Only
We can make the stars component read-only, which means it’s focusable but we can’t choose anything.
For example, we can write:
<template>
<div id="app">
<b-form-rating readonly value="4"></b-form-rating>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value: 4
};
}
};
</script>
Conclusion
There are lots of customization options for the star rating component.
The icons can be changed.
We add half-filled icons. Also, we can add a clear button to clear the ratings.